package com.imooc.service;

import com.imooc.dataobject.ProductInfo;
import com.imooc.dto.CartDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

import java.util.List;

/**
 * 商品
 * Created by 廖师兄
 * 2017-05-09 17:27
 *
 * @author 廖师兄
 */
public interface ProductService {

    /**
     * 主键查找
     *
     * @param productId 主键
     * @return 商品信息
     */
    ProductInfo findOne(String productId);

    /**
     * 查询所有在架商品列表
     *
     * @return 商品列表
     */
    List<ProductInfo> findUpAll();

    /**
     * 分页查询所有的列表
     *
     * @param pageable 分页对象
     * @return 分页结果对象
     */
    Page<ProductInfo> findAll(Pageable pageable);

    /**
     * 保存商品信息
     *
     * @param productInfo 商品信息
     * @return 商品信息
     */
    ProductInfo save(ProductInfo productInfo);

    /**
     * 加库存
     *
     * @param cartDTOList 商品集合
     */
    void increaseStock(List<CartDTO> cartDTOList);

    /**
     * 减库存
     *
     * @param cartDTOList 商品集合
     */
    void decreaseStock(List<CartDTO> cartDTOList);

    /**
     * 上架商品
     *
     * @param productId 商品ID
     * @return 商品信息
     */
    ProductInfo onSale(String productId);

    /**
     * 下架商品
     *
     * @param productId 商品ID
     * @return 商品信息
     */
    ProductInfo offSale(String productId);
}
